<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>CoffeeScript</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/CoffeeScript"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-CoffeeScript rootpage-CoffeeScript skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">CoffeeScript</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above" style="background-color:#e0e0e0;">CoffeeScript</th></tr><tr><td colspan="2" class="infobox-image"><span typeof="mw:File"></span></td></tr><tr><th scope="row" class="infobox-label"><a href="Programming_paradigm" title="Programming paradigm">Paradigms</a></th><td class="infobox-data"><a href="Multi-paradigm" class="mw-redirect" title="Multi-paradigm">Multi-paradigm</a>: <a href="Prototype-based_programming" title="Prototype-based programming">prototype-based</a>, <a href="Functional_programming" title="Functional programming">functional</a>, <a href="Imperative_programming" title="Imperative programming">imperative</a>, <a href="Scripting_language" title="Scripting language">scripting</a></td></tr><tr><th scope="row" class="infobox-label">Family</th><td class="infobox-data"><a href="ECMAScript" title="ECMAScript">ECMAScript</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_design" title="Software design">Designed by</a></th><td class="infobox-data"><a href="Jeremy_Ashkenas" title="Jeremy Ashkenas">Jeremy Ashkenas</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_developer" class="mw-redirect" title="Software developer">Developer</a></th><td class="infobox-data organiser">same</td></tr><tr><th scope="row" class="infobox-label">First appeared</th><td class="infobox-data">December 13, 2009<span style="display:none"> (<span class="bday dtstart published updated">2009-12-13</span>)</span></td></tr><tr><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">2.7.0<sup id="cite_ref-wikidata-8a46862771c9073d71b5485985192cedb12b4b77-v20_1-0" class="reference"><a href="#cite_note-wikidata-8a46862771c9073d71b5485985192cedb12b4b77-v20-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
/ 24 April 2022<span style="display:none"> (<span class="bday dtstart published updated">24 April 2022</span>)</span></div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label"><a href="Type_system" title="Type system">Typing discipline</a></th><td class="infobox-data"><a href="Dynamic_typing" class="mw-redirect" title="Dynamic typing">dynamic</a>, <a href="Latent_typing" title="Latent typing">implicit</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Scope_(computer_science)" title="Scope (computer science)">Scope</a></th><td class="infobox-data"><a href="Scope_(computer_science)" title="Scope (computer science)">lexical</a></td></tr><tr><th scope="row" class="infobox-label">Implementation language</th><td class="infobox-data">CoffeeScript</td></tr><tr><th scope="row" class="infobox-label"><a href="Computing_platform" title="Computing platform">Platform</a></th><td class="infobox-data"><a href="X86-64" title="X86-64">x86-64</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Operating_system" title="Operating system">OS</a></th><td class="infobox-data"><a href="Cross-platform_software" title="Cross-platform software">Cross-platform</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="MIT_License" title="MIT License">MIT</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Filename_extension" title="Filename extension">Filename extensions</a></th><td class="infobox-data"><code>.coffee</code>, <code>.litcoffee</code></td></tr><tr><th scope="row" class="infobox-label">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://coffeescript.org/">coffeescript<wbr>.org</a></span></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="Haskell" title="Haskell">Haskell</a>, <a href="JavaScript" title="JavaScript">JavaScript</a>, <a href="Perl" title="Perl">Perl</a>, <a href="Python_(programming_language)" title="Python (programming language)">Python</a>,<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href="YAML" title="YAML">YAML</a><sup id="cite_ref-smell_3-0" class="reference"><a href="#cite_note-smell-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="MoonScript" class="mw-redirect" title="MoonScript">MoonScript</a>, <a href="LiveScript_(programming_language)" title="LiveScript (programming language)">LiveScript</a>, JavaScript</td></tr></tbody></table>
<p><b>CoffeeScript</b> is a <a href="Programming_language" title="Programming language">programming language</a> that compiles to <a href="JavaScript" title="JavaScript">JavaScript</a>. It adds <a href="Syntactic_sugar" title="Syntactic sugar">syntactic sugar</a> inspired by <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, and <a href="Haskell" title="Haskell">Haskell</a> in an effort to enhance JavaScript's brevity and readability.<sup id="cite_ref-LittleBookMacCaw_4-0" class="reference"><a href="#cite_note-LittleBookMacCaw-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-LittleBookThomas_5-0" class="reference"><a href="#cite_note-LittleBookThomas-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Some added features include <a href="List_comprehension" title="List comprehension">list comprehension</a> and <a href="Destructuring_assignment" class="mw-redirect" title="Destructuring assignment">destructuring assignment</a>.
</p><p>CoffeeScript support is included in <a href="Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a> version 3.1<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> and <a href="Play_Framework" title="Play Framework">Play Framework</a>.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> In 2011, <a href="Brendan_Eich" title="Brendan Eich">Brendan Eich</a> referenced CoffeeScript as an influence on his thoughts about the future of JavaScript.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>On December 13, 2009, <a href="Jeremy_Ashkenas" title="Jeremy Ashkenas">Jeremy Ashkenas</a> made the first <a href="Git_(software)" class="mw-redirect" title="Git (software)">Git</a> commit of CoffeeScript with the comment "initial commit of the mystery language".<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> The compiler was written in Ruby. On December 24, he made the first tagged and documented release, 0.1.0. On February 21, 2010, he committed version 0.5, which replaced the Ruby compiler with a <a href="Self-hosting_(compilers)" title="Self-hosting (compilers)">self-hosting</a> version in pure CoffeeScript. By that time the project had attracted several other contributors on <a href="GitHub" title="GitHub">GitHub</a>, and was receiving over 300 page hits per day.
</p><p>On December 24, 2010, Ashkenas announced the release of stable 1.0.0 to <a href="Hacker_News" title="Hacker News">Hacker News</a>, the site where the project was announced for the first time.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p><p>On September 18, 2017, version 2.0.0 was introduced,<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> which "aims to bring CoffeeScript into the modern JavaScript era, closing gaps in compatibility with JavaScript while preserving the clean syntax that is CoffeeScript's hallmark".
</p>
<div class="mw-heading mw-heading2"><h2 id="Syntax">Syntax</h2></div>
<p>Almost everything is an <a href="Expression_(computer_science)" title="Expression (computer science)">expression</a> in CoffeeScript, for example, <code>if</code>, <code>switch</code> and <code>for</code> expressions (which have no return value in JavaScript) return a value. As in <a href="Perl" title="Perl">Perl</a> and Ruby, these control statements also have postfix versions; for example, <code>if</code> can also be written in <code> consequent if condition</code> form.
</p><p>Many unnecessary parentheses and braces can be omitted; for example, blocks of code can be denoted by indentation instead of braces, function calls are implicit, and object literals are often detected automatically.
</p><p>To compute the <a href="Body_mass_index" title="Body mass index">body mass index</a> in <a href="JavaScript" title="JavaScript">JavaScript</a>, one could write:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="kd">let</span><span class="w"> </span><span class="nx">mass</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">72</span><span class="p">;</span>
<span class="kd">let</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.78</span><span class="p">;</span>
<span class="kd">let</span><span class="w"> </span><span class="nx">BMI</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">mass</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">height</span><span class="o">**</span><span class="mf">2</span><span class="p">;</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="mf">18.5</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="nx">BMI</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nx">BMI</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">25</span><span class="p">)</span><span class="w"> </span><span class="nx">alert</span><span class="p">(</span><span class="s1">'You are healthy!'</span><span class="p">);</span>
</pre></div>
<p>With CoffeeScript the interval is directly described:
</p>
<div class="mw-highlight mw-highlight-lang-coffeescript mw-content-ltr" dir="ltr"><pre><span class="nv">mass</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">72</span>
<span class="nv">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.78</span>
<span class="nv">BMI</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">mass</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">height</span><span class="o">**</span><span class="mi">2</span>
<span class="nx">alert</span><span class="w"> </span><span class="s">'You are healthy!'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="mf">18.5</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="nx">BMI</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">25</span>
</pre></div>
<p>To compute the <a href="Greatest_common_divisor" title="Greatest common divisor">greatest common divisor</a> of two integers with the <a href="Euclidean_algorithm" title="Euclidean algorithm">Euclidean algorithm</a>, in JavaScript one usually needs a <i>while</i> loop:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="kd">let</span><span class="w"> </span><span class="nx">gcd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">x</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">)</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="p">[</span><span class="nx">x</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">y</span><span class="p">,</span><span class="w"> </span><span class="nx">x</span><span class="o">%</span><span class="nx">y</span><span class="p">];</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">x</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<p>Whereas in CoffeeScript one can use <code>until</code><sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> instead:
</p>
<div class="mw-highlight mw-highlight-lang-coffeescript mw-content-ltr" dir="ltr"><pre><span class="nv">gcd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">(x, y) -></span>
<span class="w"> </span><span class="p">[</span><span class="nx">x</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">y</span><span class="p">,</span><span class="w"> </span><span class="nx">x</span><span class="o">%</span><span class="nx">y</span><span class="p">]</span><span class="w"> </span><span class="k">until</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">is</span><span class="w"> </span><span class="mi">0</span>
<span class="w"> </span><span class="nx">x</span>
</pre></div>
<p>The <code>?</code> keyword quickly checks if a variable is <code>null</code> or <code>undefined</code> :
</p>
<div class="mw-highlight mw-highlight-lang-coffeescript mw-content-ltr" dir="ltr"><pre><span class="nv">personCheck</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">-></span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">not</span><span class="w"> </span><span class="nx">person</span><span class="o">?</span><span class="w"> </span><span class="k">then</span><span class="w"> </span><span class="nx">alert</span><span class="p">(</span><span class="s">"No person"</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">alert</span><span class="p">(</span><span class="s">"Have person"</span><span class="p">)</span>
<span class="nv">person</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span>
<span class="nx">personCheck</span><span class="p">()</span>
<span class="nv">person</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Ivan"</span>
<span class="nx">personCheck</span><span class="p">()</span>
</pre></div>
<p>This would alert "No person" if the variable is <code>null</code> or <code>undefined</code> and "Have person" if there is something there.
</p><p>A common pre-<a href="ES6" class="mw-redirect" title="ES6">ES6</a> JavaScript snippet using the <a href="JQuery" title="JQuery">jQuery</a> library is:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="nx">$</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nx">ready</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// Initialization code goes here</span>
<span class="p">});</span>
</pre></div>
<p>Or even just:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="nx">$</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// Initialization code goes here</span>
<span class="p">});</span>
</pre></div>
<p>In CoffeeScript, the <code>function</code> keyword is replaced by the <code>-></code> symbol, and indentation is used instead of curly braces, as in other <a href="Off-side_rule" title="Off-side rule">off-side rule</a> languages such as Python and Haskell. Also, parentheses can usually be omitted, using indentation level instead to denote a function or block. Thus, the CoffeeScript equivalent of the snippet above is:
</p>
<div class="mw-highlight mw-highlight-lang-coffeescript mw-content-ltr" dir="ltr"><pre><span class="nx">$</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nx">ready</span><span class="w"> </span><span class="nf">-></span>
<span class="w"> </span><span class="c1"># Initialization code goes here</span>
</pre></div>
<p>Or just:
</p>
<div class="mw-highlight mw-highlight-lang-coffeescript mw-content-ltr" dir="ltr"><pre><span class="nx">$</span><span class="w"> </span><span class="nf">-></span>
<span class="w"> </span><span class="c1"># Initialization code goes here</span>
</pre></div>
<p>Ruby-style string interpolation is included in CoffeeScript. Double-quoted strings allow for interpolated values, using #{ ... }, and single-quoted strings are literal.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-coffeescript mw-content-ltr" dir="ltr"><pre><span class="nv">author</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Wittgenstein"</span>
<span class="nv">quote</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"A picture is a fact. -- </span><span class="si">#{</span><span class="w"> </span><span class="nx">author</span><span class="w"> </span><span class="si">}</span><span class="s">"</span>
<span class="nv">sentence</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"</span><span class="si">#{</span><span class="w"> </span><span class="mi">22</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="si">}</span><span class="s"> is a decent approximation of π"</span>
</pre></div>
<p>Any <a href="For_loop" title="For loop"><i>for</i> loop</a> can be replaced by a <a href="List_comprehension" title="List comprehension">list comprehension</a>; so that to compute the squares of the positive odd numbers smaller than ten (i.e. numbers whose remainder modulo 2 is 1), one can do:
</p>
<div class="mw-highlight mw-highlight-lang-coffeescript mw-content-ltr" dir="ltr"><pre><span class="nx">alert</span><span class="w"> </span><span class="nx">n</span><span class="o">*</span><span class="nx">n</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">..</span><span class="mi">10</span><span class="p">]</span><span class="w"> </span><span class="k">when</span><span class="w"> </span><span class="nx">n</span><span class="o">%</span><span class="mi">2</span><span class="w"> </span><span class="o">is</span><span class="w"> </span><span class="mi">1</span>
</pre></div>
<p>Alternatively, there is:
</p>
<div class="mw-highlight mw-highlight-lang-coffeescript mw-content-ltr" dir="ltr"><pre><span class="nx">alert</span><span class="w"> </span><span class="nx">n</span><span class="o">*</span><span class="nx">n</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">..</span><span class="mi">10</span><span class="p">]</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="mi">2</span>
</pre></div>
<p>A <a href="Linear_search" title="Linear search">linear search</a> can be implemented with a one-liner using the when keyword:
</p>
<div class="mw-highlight mw-highlight-lang-coffeescript mw-content-ltr" dir="ltr"><pre><span class="nv">names</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">"Ivan"</span><span class="p">,</span><span class="w"> </span><span class="s">"Joanna"</span><span class="p">,</span><span class="w"> </span><span class="s">"Nikolay"</span><span class="p">,</span><span class="w"> </span><span class="s">"Mihaela"</span><span class="p">]</span>
<span class="nv">linearSearch</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">(searchName) -></span><span class="w"> </span><span class="nx">alert</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">name</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nx">names</span><span class="w"> </span><span class="k">when</span><span class="w"> </span><span class="nx">name</span><span class="w"> </span><span class="o">is</span><span class="w"> </span><span class="nx">searchName</span>
</pre></div>
<p>The <code>for ... in</code> syntax allows looping over arrays while the <code>for ... of</code> syntax allows looping over objects.
</p><p>CoffeeScript has been criticized for its unusual <a href="Scope_(computer_science)" title="Scope (computer science)">scoping</a> rules.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> In particular, it completely disallows <a href="Variable_shadowing" title="Variable shadowing">variable shadowing</a> which makes reasoning about code more difficult and error-prone in some basic programming patterns established
by and taken for granted since <a href="Procedural_programming" title="Procedural programming">procedural programming</a> principles were defined.
</p><p>For example, with the following code snippet in JavaScript
one does not have to look outside the <code>{}</code>-block to know for
sure that no possible <code>foo</code> variable in the outer scope can be
incidentally overridden:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="w"> </span><span class="c1">// ...</span>
<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">baz</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"bar"</span><span class="p">;</span>
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="sb">`foo = </span><span class="si">${</span><span class="nx">foo</span><span class="si">}</span><span class="sb">`</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span>
</pre></div>
<p>In CoffeeScript there is no way to tell if the scope of a variable is limited to a block or not without looking outside the block.
</p>
<div class="mw-heading mw-heading2"><h2 id="Development_and_distribution">Development and distribution</h2></div>
<p>The CoffeeScript compiler has been <a href="Self-hosting_(compilers)" title="Self-hosting (compilers)">self-hosting</a> since version 0.5 and is available as a <a href="Node.js" title="Node.js">Node.js</a> utility; however, the core compiler does not rely on Node.js and can be run in any <a href="JavaScript" title="JavaScript">JavaScript</a> environment.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> One alternative to the <a href="Node.js" title="Node.js">Node.js</a> utility is the Coffee Maven Plugin, a plugin for the <a href="Apache_Maven" title="Apache Maven">Apache Maven</a> build system. The plugin uses the <a href="Rhino_(JavaScript_engine)" title="Rhino (JavaScript engine)">Rhino</a> JavaScript engine written in <a href="Java_(programming_language)" title="Java (programming language)">Java</a>.
</p><p>The official site at CoffeeScript.org has a "Try CoffeeScript" button in the menu bar; clicking it opens a modal window in which users can enter CoffeeScript, see the JavaScript output, and run it directly in the browser. The js2coffee<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> site provides bi-directional translation.
</p>
<div class="mw-heading mw-heading2"><h2 id="Latest_additions">Latest additions</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<ul><li>Source maps allow users to debug their CoffeeScript code directly, supporting CoffeeScript tracebacks on run time errors.</li>
<li>CoffeeScript supports a form of <a href="Literate_programming" title="Literate programming">literate programming</a>, using the <code>.coffee.md</code> or <code>.litcoffee</code> file extension. This allows the <a href="Source_code" title="Source code">source code</a> to be written in <a href="Markdown" title="Markdown">Markdown</a>. The compiler will treat any indented blocks (Markdown's way of indicating source code) as code, and ignore the rest as comments.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Extensions">Extensions</h2></div>
<p>Iced CoffeeScript is a superset of CoffeeScript which adds two new keywords: <code>await</code> and <code>defer</code>. These additions simplify asynchronous control flow, making the code look more like a <a href="Procedural_programming" title="Procedural programming">procedural programming</a> language, eliminating the call-back chain. It can be used on the server side and in the browser.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Adoption">Adoption</h2></div>
<p>On September 13, 2012, <a href="Dropbox_(service)" class="mw-redirect" title="Dropbox (service)">Dropbox</a> announced that their browser-side code base had been rewritten from <a href="JavaScript" title="JavaScript">JavaScript</a> to CoffeeScript,<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> however it was migrated to <a href="TypeScript" title="TypeScript">TypeScript</a> in 2017.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>
</p><p><a href="GitHub" title="GitHub">GitHub</a>'s internal style guide once said "write new JS in CoffeeScript", though it no longer does,<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup> and its <a href="Atom_(text_editor)" title="Atom (text editor)">Atom text editor</a> was also written in the language, with configuration written in <a href="CSON" class="mw-redirect" title="CSON">CSON</a> ("CoffeeScript Object Notation"), a variant of <a href="JSON" title="JSON">JSON</a>.<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>
</p><p><a href="Pixel_Game_Maker_MV" title="Pixel Game Maker MV">Pixel Game Maker MV</a> makes uses of CoffeeScript as part of its game development environment.<sup id="cite_ref-CCG_26-0" class="reference"><a href="#cite_note-CCG-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */
.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}
/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="Haxe" title="Haxe">Haxe</a></li>
<li><a href="Nim_(programming_language)" title="Nim (programming language)">Nim (programming language)</a></li>
<li><a href="Amber_Smalltalk" title="Amber Smalltalk">Amber Smalltalk</a></li>
<li><a href="Clojure" title="Clojure">Clojure</a></li>
<li><a href="Dart_(programming_language)" title="Dart (programming language)">Dart (programming language)</a></li>
<li><a href="Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin (programming language)</a></li>
<li><a href="LiveScript_(programming_language)" title="LiveScript (programming language)">LiveScript (programming language)</a></li>
<li><a href="Opa_(programming_language)" title="Opa (programming language)">Opa (programming language)</a></li>
<li><a href="Elm_(programming_language)" title="Elm (programming language)">Elm (programming language)</a></li>
<li><a href="TypeScript" title="TypeScript">TypeScript</a></li>
<li><a href="PureScript" title="PureScript">PureScript</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-wikidata-8a46862771c9073d71b5485985192cedb12b4b77-v20-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-wikidata-8a46862771c9073d71b5485985192cedb12b4b77-v20_1-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/jashkenas/coffeescript/releases/tag/2.7.0">"2.7.0"</a>. 24 April 2022<span class="reference-accessdate">. Retrieved <span class="nowrap">9 August</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external free" href="https://coffeescript.org/">https://coffeescript.org/</a> "CoffeeScript borrows chained comparisons from Python"</span>
</li>
<li id="cite_note-smell-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-smell_3-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFHeller2011" class="citation news cs1">Heller, Martin (October 18, 2011). <a rel="nofollow" class="external text" href="https://www.infoworld.com/article/2078452/turn-up-your-nose-at-dart-and-smell-the-coffeescript.html">"Turn up your nose at Dart and smell the CoffeeScript"</a>. <i><a href="InfoWorld" title="InfoWorld">InfoWorld</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">2020-07-15</span></span>.</cite></span>
</li>
<li id="cite_note-LittleBookMacCaw-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-LittleBookMacCaw_4-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFMacCaw2012" class="citation book cs1">MacCaw, Alex (28 February 2012). <i>The Little Book on CoffeeScript: The JavaScript Developer's Guide to Building Better Web Apps</i> (1st ed.). <a href="O'Reilly_Media" title="O'Reilly Media">O'Reilly Media</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4493-2105-5</bdi>.</cite></span>
</li>
<li id="cite_note-LittleBookThomas-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-LittleBookThomas_5-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFThomas2017" class="citation book cs1">Thomas, Lucas (2017). <i>The Little Book on CoffeeScript</i> (1st ed.). CreateSpace Independent Publishing Platform. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-5472-1072-5</bdi>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFPeek2011" class="citation web cs1">Peek, Josh (April 13, 2011). <a rel="nofollow" class="external text" href="https://twitter.com/joshpeek/status/58184348742074368">"Tweet by Rails Core Team Member"</a>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.playframework.com/documentation/2.5.x/AssetsCoffeeScript">"AssetsCoffeeScript - 2.5.x"</a>. <i>www.playframework.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2016-10-31</span></span>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text">Eich, Brendan. "<a rel="nofollow" class="external text" href="http://brendaneich.com/2011/01/harmony-of-my-dreams/">Harmony of My Dreams</a>"</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text">Eich, Brendan. "<a rel="nofollow" class="external text" href="http://brendaneich.com/2011/05/my-jsconf-us-presentation/">My JSConf.US Presentation</a>"</span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text">Github. <a rel="nofollow" class="external text" href="https://github.com/jashkenas/coffee-script/commit/8e9d637985d2dc9b44922076ad54ffef7fa8e9c2">'initial commit of the mystery language'</a></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text">Hacker News. <a rel="nofollow" class="external text" href="https://news.ycombinator.com/item?id=2037801">CoffeeScript 1.0.0 announcement</a> posted by Jeremy Ashkenas on Dec 24, 2010</span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text">Hacker News. <a rel="nofollow" class="external text" href="https://news.ycombinator.com/item?id=1014080">Original CoffeeScript announcement</a> posted by Jeremy Ashkenas on Dec 24, 2009</span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text">coffeescript.org <a rel="nofollow" class="external text" href="http://coffeescript.org/announcing-coffeescript-2/">Announcing CoffeeScript 2</a></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text">CoffeeScript calls this "<a href="Pattern_matching" title="Pattern matching">pattern matching</a>", which is a non-standard use of that term.</span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://coffeescript.org">"Official CoffeeScript Page"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">20 November</span> 2013</span>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://lucumr.pocoo.org/2011/12/22/implicit-scoping-in-coffeescript/">"The Problem with Implicit Scoping in CoffeeScript"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2018-10-13</span></span>.</cite></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://donatstudios.com/CoffeeScript-Madness">"CoffeeScript's Scoping is Madness"</a>. 25 July 2013<span class="reference-accessdate">. Retrieved <span class="nowrap">2018-10-13</span></span>.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://jashkenas.github.com/coffee-script/#installation">CoffeeScript</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120427060308/http://jashkenas.github.com/coffee-script/">Archived</a> 2012-04-27 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>. Jashkenas.github.com. Retrieved on 2013-07-21.</span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><cite id="CITEREFSta_Cruz" class="citation web cs1">Sta Cruz, Rico. <a rel="nofollow" class="external text" href="http://js2.coffee">"js2coffee"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">11 May</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://maxtaco.github.io/coffee-script/">"Official IcedCoffeeScript website"</a>.</cite></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><cite id="CITEREFWheelerMahkovecVarenhorst2012" class="citation web cs1">Wheeler, Dan; Mahkovec, Ziga; Varenhorst, Chris (13 September 2012). <a rel="nofollow" class="external text" href="https://dropbox.tech/application/dropbox-dives-into-coffeescript">"Dropbox dives into CoffeeScript"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">11 May</span> 2013</span>.</cite></span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><cite id="CITEREFGoldstein2020" class="citation web cs1">Goldstein, David (13 May 2020). <a rel="nofollow" class="external text" href="https://dropbox.tech/frontend/the-great-coffeescript-to-typescript-migration-of-2017">"The Great CoffeeScript to Typescript Migration of 2017"</a>. <i>Dropbox.Tech</i><span class="reference-accessdate">. Retrieved <span class="nowrap">30 June</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20130815075924/https://github.com/styleguide/javascript">"JavaScript · Styleguide · GitHub"</a>. Github.com. Archived from <a rel="nofollow" class="external text" href="https://github.com/styleguide/javascript">the original</a> on 2013-08-15<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-30</span></span>.</cite></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/atom/atom">"Atom source code"</a>. <a href="GitHub" title="GitHub">GitHub</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-06-26</span></span>.</cite></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://flight-manual.atom-editor.cc/using-atom/sections/basic-customization/#configuring-with-cson">"Basic Customization"</a>. <i><a href="Atom_(text_editor)" title="Atom (text editor)">Atom</a> Flight Manual</i>. <a href="GitHub" title="GitHub">GitHub</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20240429181349/https://flight-manual.atom-editor.cc/using-atom/sections/basic-customization/">Archived</a> from the original on 2024-04-29<span class="reference-accessdate">. Retrieved <span class="nowrap">29 April</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-CCG-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-CCG_26-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFCullen" class="citation web cs1">Cullen, Daniel. <a rel="nofollow" class="external text" href="https://www.christcenteredgamer.com/reviews/pc-mac/pixel-game-maker-mv-pc">"Pixel Game Maker MV (PC)"</a>. <i>Christ Centered Gaming</i><span class="reference-accessdate">. Retrieved <span class="nowrap">15 January</span> 2021</span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<ul><li><cite id="CITEREFLee2014" class="citation book cs1">Lee, Patrick (May 14, 2014). <i>CoffeeScript in Action</i> (1st ed.). <a href="Manning_Publications" title="Manning Publications">Manning Publications</a>. p. 432. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1617290626</bdi>.</cite></li>
<li><cite id="CITEREFGrosenbach2011" class="citation book cs1">Grosenbach, Geoffrey (May 12, 2011). <i>Meet CoffeeScript</i> (1st ed.). PeepCode.</cite></li>
<li><cite id="CITEREFBates2012" class="citation book cs1">Bates, Mark (May 31, 2012). <i>Programming in CoffeeScript</i> (1st ed.). <a href="Addison-Wesley" title="Addison-Wesley">Addison-Wesley</a>. p. 350. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-321-82010-5</bdi>.</cite></li>
<li><cite id="CITEREFBurnham2011" class="citation book cs1">Burnham, Trevor (August 3, 2011). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/isbn_9781934356784/page/138"><i>CoffeeScript: Accelerated JavaScript Development</i></a></span> (1st ed.). <a href="Pragmatic_Bookshelf" class="mw-redirect" title="Pragmatic Bookshelf">Pragmatic Bookshelf</a>. p. <a rel="nofollow" class="external text" href="https://archive.org/details/isbn_9781934356784/page/138">138</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1934356784</bdi>.</cite></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://coffeescript.org/">Official website</a></span></span> </li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="JavaScript497" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="JavaScript497" style="font-size:114%;margin:0 4em"><a href="JavaScript" title="JavaScript">JavaScript</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Static_program_analysis" title="Static program analysis">Code analysis</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ESLint" title="ESLint">ESLint</a></li>
<li><a href="JSHint" title="JSHint">JSHint</a></li>
<li><a href="JSLint" title="JSLint">JSLint</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Subset" title="Subset">Supersets</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ArkTS" title="ArkTS">ArkTS</a></li>
<li><a href="JS%2B%2B" title="JS++">JS++</a></li>
<li><a href="TypeScript" title="TypeScript">TypeScript</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Source-to-source_compiler" title="Source-to-source compiler">Transpilers</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="AtScript" title="AtScript">AtScript</a></li>
<li><a href="Babel_(transcompiler)" title="Babel (transcompiler)">Babel</a></li>
<li><a href="ClojureScript" class="mw-redirect" title="ClojureScript">ClojureScript</a></li>
<li><a href="Dart_(programming_language)" title="Dart (programming language)">Dart</a></li>
<li><a href="Elm_(programming_language)" title="Elm (programming language)">Elm</a></li>
<li><a href="Emscripten" title="Emscripten">Emscripten</a></li>
<li><a href="Google_Closure_Compiler" class="mw-redirect" title="Google Closure Compiler">Google Closure Compiler</a></li>
<li><a href="Google_Web_Toolkit" title="Google Web Toolkit">Google Web Toolkit</a></li>
<li><a href="Haxe" title="Haxe">Haxe</a></li>
<li><a href="LiveScript_(programming_language)" title="LiveScript (programming language)">LiveScript</a></li>
<li><a href="Morfik" title="Morfik">Morfik</a></li>
<li><a href="Nim_(programming_language)" title="Nim (programming language)">Nim</a></li>
<li><a href="Opa_(programming_language)" title="Opa (programming language)">Opa</a></li>
<li><a href="PureScript" title="PureScript">PureScript</a></li>
<li><a href="Reason_(programming_language)" title="Reason (programming language)">Reason</a></li>
<li><a href="WebSharper" title="WebSharper">WebSharper</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Concepts</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="JavaScript_library" title="JavaScript library">JavaScript library</a></li>
<li><a href="JavaScript_syntax" title="JavaScript syntax">JavaScript syntax</a></li>
<li><a href="JavaScript_stack" title="JavaScript stack">JavaScript stack</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Debugger" title="Debugger">Debuggers</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Chrome_(browser)" class="mw-redirect" title="Chrome (browser)">Chrome DevTools</a></li>
<li><a href="Firefox" title="Firefox">Firefox</a> Inspector</li>
<li><a href="Komodo_IDE" title="Komodo IDE">Komodo IDE</a></li>
<li><a href="Safari_(web_browser)" title="Safari (web browser)">Safari</a> Web Inspector</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Documentation_generator" title="Documentation generator">Documentation generators</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="JSDoc" title="JSDoc">JSDoc</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Editors (<a href="Comparison_of_JavaScript-based_source_code_editors" title="Comparison of JavaScript-based source code editors">comparison</a>)</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Ace_(editor)" title="Ace (editor)">Ace</a>
<ul><li><a href="Cloud9_IDE" title="Cloud9 IDE">Cloud9 IDE</a></li></ul></li>
<li><a href="Atom_(text_editor)" title="Atom (text editor)">Atom</a></li>
<li><a href="CodeMirror" title="CodeMirror">CodeMirror</a>
<ul><li><a href="Brackets_(text_editor)" title="Brackets (text editor)">Brackets</a></li>
<li><a href="Light_Table_(software)" title="Light Table (software)">Light Table</a></li></ul></li>
<li><a href="PhpStorm" class="mw-redirect" title="PhpStorm">PhpStorm</a></li>
<li><a href="List_of_Eclipse_projects#Top-level_sub-projects" title="List of Eclipse projects">Orion</a></li>
<li><a href="Visual_Studio" title="Visual Studio">Visual Studio</a>
<ul><li><a href="Microsoft_Visual_Studio_Express" title="Microsoft Visual Studio Express">Visual Studio Express</a></li></ul></li>
<li><a href="Visual_Studio_Code" title="Visual Studio Code">Visual Studio Code</a></li>
<li><a href="Visual_Studio#Azure_DevOps_Services" title="Visual Studio">Visual Studio Team Services</a></li>
<li><a href="Vim_(text_editor)" title="Vim (text editor)">Vim</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="JavaScript_engine" class="mw-redirect" title="JavaScript engine">Engines</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="List_of_ECMAScript_engines" class="mw-redirect" title="List of ECMAScript engines">List of ECMAScript engines</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Software_framework" title="Software framework">Frameworks</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Comparison_of_JavaScript-based_web_frameworks" title="Comparison of JavaScript-based web frameworks">Comparison of JavaScript frameworks</a></li>
<li><a href="List_of_JavaScript_libraries" title="List of JavaScript libraries">List of JavaScript libraries</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related <a href="Technology" title="Technology">technologies</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Ajax_(programming)" title="Ajax (programming)">Ajax</a></li>
<li><a href="AssemblyScript" title="AssemblyScript">AssemblyScript</a></li>
<li><a href="Asm.js" title="Asm.js">asm.js</a></li>
<li><a href="Cascading_Style_Sheets" class="mw-redirect" title="Cascading Style Sheets">Cascading Style Sheets</a></li>
<li><a href="Document_Object_Model" title="Document Object Model">Document Object Model</a></li>
<li><a href="HTML" title="HTML">HTML</a>
<ul><li><a href="HTML5" title="HTML5">HTML5</a></li></ul></li>
<li><a href="JSON" title="JSON">JSON</a></li>
<li><a href="WebAssembly" title="WebAssembly">WebAssembly</a></li>
<li><a href="WebAuthn" title="WebAuthn">WebAuthn</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Package_manager" title="Package manager">Package managers</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Npm" title="Npm">npm</a></li>
<li><a href="Pnpm" title="Pnpm">pnpm</a></li>
<li><a href="Yarn_(package_manager)" title="Yarn (package manager)">yarn</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Module bundlers</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Webpack" title="Webpack">Webpack</a></li>
<li><a href="Vite_(software)" title="Vite (software)">Vite</a></li>
<li><a href="Esbuild" title="Esbuild">esbuild</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Server-side_JavaScript" class="mw-redirect" title="Server-side JavaScript">Server-side</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Active_Server_Pages" title="Active Server Pages">Active Server Pages</a></li>
<li><a href="Bun_(software)" title="Bun (software)">Bun</a></li>
<li><a href="CommonJS" title="CommonJS">CommonJS</a></li>
<li><a href="Deno_(software)" title="Deno (software)">Deno</a></li>
<li><a href="JSGI" title="JSGI">JSGI</a></li>
<li><a href="Node.js" title="Node.js">Node.js</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Unit_testing" title="Unit testing">Unit testing</a> frameworks (<a href="List_of_unit_testing_frameworks#JavaScript" title="List of unit testing frameworks">list</a>)</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Jasmine_(software)" title="Jasmine (software)">Jasmine</a></li>
<li><a href="Mocha_(JavaScript_framework)" title="Mocha (JavaScript framework)">Mocha</a></li>
<li><a href="QUnit" title="QUnit">QUnit</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Douglas_Crockford" title="Douglas Crockford">Douglas Crockford</a></li>
<li><a href="Ryan_Dahl" title="Ryan Dahl">Ryan Dahl</a></li>
<li><a href="Brendan_Eich" title="Brendan Eich">Brendan Eich</a></li>
<li><a href="John_Resig" title="John Resig">John Resig</a></li>
<li><a href="Jesse_James_Garrett" title="Jesse James Garrett">Jesse James Garrett</a></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Node.js47" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><div id="Node.js47" style="font-size:114%;margin:0 4em"><a href="Node.js" title="Node.js">Node.js</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Platform</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Node.js" title="Node.js">Node.js</a></li>
<li><a href="Npm" title="Npm">npm</a></li>
<li><a href="V8_(JavaScript_engine)" title="V8 (JavaScript engine)">V8</a></li>
<li><a href="CommonJS" title="CommonJS">CommonJS</a></li></ul>
</div></td><td class="noviewer navbox-image" rowspan="4" style="width:1px;padding:0 0 0 2px"><div><span typeof="mw:File"></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Frameworks</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="MEAN_(solution_stack)" class="mw-redirect" title="MEAN (solution stack)">MEAN</a>
<ul><li><a href="MongoDB" title="MongoDB">MongoDB</a></li>
<li><a href="Express.js" title="Express.js">Express.js</a></li>
<li><a href="AngularJS" title="AngularJS">AngularJS</a>/<a href="Angular_(web_framework)" title="Angular (web framework)">Angular</a></li></ul></li>
<li>MEEN (substituted with <a href="Ember.js" title="Ember.js">Ember.js</a>)</li>
<li><a href="Backbone.js" title="Backbone.js">Backbone.js</a></li>
<li><a href="Fastify" title="Fastify">Fastify</a></li>
<li><a href="Meteor_(web_framework)" title="Meteor (web framework)">Meteor</a></li>
<li><a href="Sails.js" title="Sails.js">Sails.js</a> (uses Express.js)</li>
<li><a href="NestJS" title="NestJS">NestJS</a></li>
<li><a href="Next.js" title="Next.js">Next.js</a></li>
<li><a href="Nuxt.js" class="mw-redirect" title="Nuxt.js">Nuxt.js</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Libraries</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Lodash" title="Lodash">Lodash</a></li>
<li><a href="Underscore.js" title="Underscore.js">Underscore.js</a></li>
<li><a href="React.js" class="mw-redirect" title="React.js">React.js</a></li>
<li><a href="Vue.js" title="Vue.js">Vue.js</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Languages</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="JavaScript" title="JavaScript">JavaScript</a></li>
<li><a href="TypeScript" title="TypeScript">TypeScript</a></li>
<li><a href="WebAssembly" title="WebAssembly">WebAssembly</a>
<ul><li><a href="AssemblyScript" title="AssemblyScript">AssemblyScript</a></li>
<li><a href="C_(programming_language)" title="C (programming language)">C</a></li>
<li><a href="Rust_(programming_language)" title="Rust (programming language)">Rust</a></li></ul></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Programming_languages625" style="padding:3px"><table class="nowraplinks hlist mw-collapsible expanded navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Programming_languages625" style="font-size:114%;margin:0 4em"><a href="Programming_language" title="Programming language">Programming languages</a></div></th></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><a href="Comparison_of_programming_languages" title="Comparison of programming languages">Comparison</a></li>
<li><a href="Timeline_of_programming_languages" title="Timeline of programming languages">Timeline</a></li>
<li><a href="History_of_programming_languages" title="History of programming languages">History</a></li></ul>
</div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Ada_(programming_language)" title="Ada (programming language)">Ada</a></li>
<li><a href="ALGOL" title="ALGOL">ALGOL</a>
<ul><li><a href="Simula" title="Simula">Simula</a></li></ul></li>
<li><a href="APL_(programming_language)" title="APL (programming language)">APL</a></li>
<li><a href="Assembly_language" title="Assembly language">Assembly</a></li>
<li><a href="BASIC" title="BASIC">BASIC</a>
<ul><li><a href="Visual_Basic" title="Visual Basic">Visual Basic</a>
<ul><li><a href="Visual_Basic_(classic)" title="Visual Basic (classic)">classic</a></li>
<li><a href="Visual_Basic_(.NET)" title="Visual Basic (.NET)">.NET</a></li></ul></li></ul></li>
<li><a href="C_(programming_language)" title="C (programming language)">C</a></li>
<li><a href="C%2B%2B" title="C++">C++</a></li>
<li><a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a></li>
<li><a href="COBOL" title="COBOL">COBOL</a></li>
<li><a href="Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a>
<ul><li><a href="Elixir_(programming_language)" title="Elixir (programming language)">Elixir</a></li></ul></li>
<li><a href="Forth_(programming_language)" title="Forth (programming language)">Forth</a></li>
<li><a href="Fortran" title="Fortran">Fortran</a></li>
<li><a href="Go_(programming_language)" title="Go (programming language)">Go</a></li>
<li><a href="Haskell" title="Haskell">Haskell</a></li>
<li><a href="Java_(programming_language)" title="Java (programming language)">Java</a></li>
<li><a href="JavaScript" title="JavaScript">JavaScript</a></li>
<li><a href="Julia_(programming_language)" title="Julia (programming language)">Julia</a></li>
<li><a href="Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a></li>
<li><a href="Lisp_(programming_language)" title="Lisp (programming language)">Lisp</a></li>
<li><a href="Lua" title="Lua">Lua</a></li>
<li><a href="MATLAB" title="MATLAB">MATLAB</a></li>
<li><a href="ML_(programming_language)" title="ML (programming language)">ML</a>
<ul><li><a href="Caml" title="Caml">Caml </a>
<ul><li><a href="OCaml" title="OCaml">OCaml</a></li></ul></li></ul></li>
<li><a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>
<ul><li><a href="Object_Pascal" title="Object Pascal">Object Pascal</a></li></ul></li>
<li><a href="Perl" title="Perl">Perl </a>
<ul><li><a href="Raku_(programming_language)" title="Raku (programming language)">Raku</a></li></ul></li>
<li><a href="PHP" title="PHP">PHP</a></li>
<li><a href="Prolog" title="Prolog">Prolog</a></li>
<li><a href="Python_(programming_language)" title="Python (programming language)">Python</a></li>
<li><a href="R_(programming_language)" title="R (programming language)">R</a></li>
<li><a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a></li>
<li><a href="Rust_(programming_language)" title="Rust (programming language)">Rust</a></li>
<li><a href="SAS_language" title="SAS language">SAS</a></li>
<li><a href="SQL" title="SQL">SQL</a></li>
<li><a href="Scratch_(programming_language)" title="Scratch (programming language)">Scratch</a></li>
<li><a href="Shell_script" title="Shell script">Shell</a></li>
<li><a href="Smalltalk" title="Smalltalk">Smalltalk</a></li>
<li><a href="Swift_(programming_language)" title="Swift (programming language)">Swift</a></li>
<li><i><a href="List_of_programming_languages" title="List of programming languages">more...</a></i></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><span class="noviewer" typeof="mw:File"><span title="List-Class article"></span></span> <b>Lists:</b> <a href="List_of_programming_languages" title="List of programming languages">Alphabetical</a></li>
<li><a href="List_of_programming_languages_by_type" title="List of programming languages by type">Categorical</a></li>
<li><a href="Generational_list_of_programming_languages" title="Generational list of programming languages">Generational</a></li>
<li><a href="Non-English-based_programming_languages" title="Non-English-based programming languages">Non-English-based</a></li>
<li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> Category</li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox authority-control" aria-labelledby="Authority_control_databases_frameless&#124;text-top&#124;10px&#124;alt=Edit_this_at_Wikidata&#124;link=https&#58;//www.wikidata.org/wiki/Q1106819#identifiers&#124;class=noprint&#124;Edit_this_at_Wikidata647" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Authority_control_databases_frameless&#124;text-top&#124;10px&#124;alt=Edit_this_at_Wikidata&#124;link=https&#58;//www.wikidata.org/wiki/Q1106819#identifiers&#124;class=noprint&#124;Edit_this_at_Wikidata647" style="font-size:114%;margin:0 4em">Authority control databases </div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">National</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh2012001950">United States</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://www.nli.org.il/en/authorities/987007585904005171">Israel</a></span></li></ul></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://lux.collections.yale.edu/view/concept/4e2e2fc5-8634-4c35-aef3-f681c855f717">Yale LUX</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-06-01" href="https://en.wikipedia.org/wiki/?title=CoffeeScript&oldid=1293443756">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>